/*
 * 文件名:Material.java
 * 创建时间:2010-10-01
 * 版本:2.0
 * 版权所有:杨涛 walle1027@gmail.com
 */
package com.yangtao.wms.domain;

import com.yangtao.framework.hibernate.BaseEntity;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

import javax.persistence.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author 代码生成器 v-2.0
 * @version 2.0
 */
@Entity
@Table(name = "WMS_MST_Material")
public class Material extends BaseEntity implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 物料编号
	 */
	@Column(name = "MATERIAL_CODE", length = 20)
	private String materialCode;
	/**
	 * 物料名称
	 */
	@Column(name = "MATERIAL_NAME", length = 50)
	private String materialName;
	/**
	 * 英文名称
	 */
	@Column(name = "E_NAME", length = 50)
	private String ename;
	/**
	 * 物料规格
	 */
	@Column(name = "MATERIAL_SPEC", length = 50)
	private String materialSpec;
	/**
	 * 助记码
	 */
	@Column(name = "HELP_CODE", length = 20)
	private String helpCode;
	/**
	 * 条形码
	 */
	@Column(name = "BARCODE", length = 20)
	private String barcode;
	/**
	 * 单价
	 */
	@Column(name = "PRICE", length = 9, scale = 3)
	private BigDecimal price;
	/**
	 * 币种
	 */
	@Column(name = "CURRENCY", length = 20)
	private String currency;
	/**
	 * 产地
	 */
	@Column(name = "PRODUCING_AREA", length = 200)
	private String producingArea;
	/**
	 * 包装单位
	 */
	@Column(name = "PACK_UNIT", length = 20)
	private String packUnit;
	/**
	 * 单品数目
	 */
	@Column(name = "PACK_QTY", length = 9, scale = 3)
	private BigDecimal packQty;
	/**
	 * 单位重量
	 */
	@Column(name = "PACK_WEIGHT", length = 9, scale = 3)
	private BigDecimal packWeight;
	/**
	 * 重量单位
	 */
	@Column(name = "WEIGHT_UNIT", length = 20)
	private String weightUnit;
	/**
	 * 单位毛重
	 */
	@Column(name = "PACK_GROSS_WEIGHT", length = 9, scale = 3)
	private BigDecimal packGrossWeight;
	/**
	 * 单位体积
	 */
	@Column(name = "PACK_VOLUMN", length = 9, scale = 3)
	private BigDecimal packVolumn;
	/**
	 * 体积单位
	 */
	@Column(name = "VOLUMN_UNIT", length = 20)
	private String volumnUnit;
	/**
	 * 最大库存
	 */
	@Column(name = "MAX_STORAGE", length = 9, scale = 3)
	private BigDecimal maxStorage;
	/**
	 * 最小库存
	 */
	@Column(name = "MIN_STORAGE", length = 9, scale = 3)
	private BigDecimal minStorage;
	/**
	 * 安全库存
	 */
	@Column(name = "SAFE_STORAGE", length = 9, scale = 3)
	private BigDecimal safeStorage;
	/**
	 * 库存单位
	 */
	@Column(name = "STORAGE_UNIT", length = 20)
	private String storageUnit;
	/**
	 * 存储类型
	 */
	@Column(name = "STORAGE_TYPE", length = 20)
	private String storageType;
	/**
	 * 存储条件
	 */
	@Column(name = "STORAGE_TERMS", length = 20)
	private String storageTerms;
	/**
	 * 自动报警
	 */
	@Column(name = "AUTO_ALARM")
	private Boolean autoAlarm;
	/**
	 * ABC分类
	 */
	@Column(name = "ABC_TYPE", length = 20)
	private String abcType;
	/**
	 * 物料详细信息表
	 */
	@OneToOne(fetch = FetchType.LAZY, mappedBy = "material")
	@Cascade(CascadeType.ALL)
	private MaterialDetail materialDetail;
	/**
	 * 客户设置信息表
	 */
	@OneToOne(fetch = FetchType.LAZY, mappedBy = "material")
	@Cascade(CascadeType.ALL)
	private CustomerSetting customerSetting;
	/**
	 * 物料组表
	 */
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "material")
	private List<MaterialGroup> materialGroup;
	/**
	 * 物料-客户关联表
	 */
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "material")
	@Cascade(CascadeType.ALL)
	private List<MaterialCustomer> materialCustomer;


	/**
	 * 获取  物料编号
	 *
	 * @return materialCode
	 */
	public String getMaterialCode() {
		return materialCode;
	}

	/**
	 * 设置 物料编号
	 *
	 * @param materialCode 物料编号
	 */
	public void setMaterialCode(String materialCode) {
		this.materialCode = materialCode;
	}

	/**
	 * 获取  物料名称
	 *
	 * @return materialName
	 */
	public String getMaterialName() {
		return materialName;
	}

	/**
	 * 设置 物料名称
	 *
	 * @param materialName 物料名称
	 */
	public void setMaterialName(String materialName) {
		this.materialName = materialName;
	}

	/**
	 * 获取  英文名称
	 *
	 * @return ename
	 */
	public String getEname() {
		return ename;
	}

	/**
	 * 设置 英文名称
	 *
	 * @param ename 英文名称
	 */
	public void setEname(String ename) {
		this.ename = ename;
	}

	/**
	 * 获取  物料规格
	 *
	 * @return materialSpec
	 */
	public String getMaterialSpec() {
		return materialSpec;
	}

	/**
	 * 设置 物料规格
	 *
	 * @param materialSpec 物料规格
	 */
	public void setMaterialSpec(String materialSpec) {
		this.materialSpec = materialSpec;
	}

	/**
	 * 获取  助记码
	 *
	 * @return helpCode
	 */
	public String getHelpCode() {
		return helpCode;
	}

	/**
	 * 设置 助记码
	 *
	 * @param helpCode 助记码
	 */
	public void setHelpCode(String helpCode) {
		this.helpCode = helpCode;
	}

	/**
	 * 获取  条形码
	 *
	 * @return barcode
	 */
	public String getBarcode() {
		return barcode;
	}

	/**
	 * 设置 条形码
	 *
	 * @param barcode 条形码
	 */
	public void setBarcode(String barcode) {
		this.barcode = barcode;
	}

	/**
	 * 获取  单价
	 *
	 * @return price
	 */
	public BigDecimal getPrice() {
		return price;
	}

	/**
	 * 设置 单价
	 *
	 * @param price 单价
	 */
	public void setPrice(BigDecimal price) {
		this.price = price;
	}

	/**
	 * 获取  币种
	 *
	 * @return currency
	 */
	public String getCurrency() {
		return currency;
	}

	/**
	 * 设置 币种
	 *
	 * @param currency 币种
	 */
	public void setCurrency(String currency) {
		this.currency = currency;
	}

	/**
	 * 获取  产地
	 *
	 * @return producingArea
	 */
	public String getProducingArea() {
		return producingArea;
	}

	/**
	 * 设置 产地
	 *
	 * @param producingArea 产地
	 */
	public void setProducingArea(String producingArea) {
		this.producingArea = producingArea;
	}

	/**
	 * 获取  包装单位
	 *
	 * @return packUnit
	 */
	public String getPackUnit() {
		return packUnit;
	}

	/**
	 * 设置 包装单位
	 *
	 * @param packUnit 包装单位
	 */
	public void setPackUnit(String packUnit) {
		this.packUnit = packUnit;
	}

	/**
	 * 获取  单品数目
	 *
	 * @return packQty
	 */
	public BigDecimal getPackQty() {
		return packQty;
	}

	/**
	 * 设置 单品数目
	 *
	 * @param packQty 单品数目
	 */
	public void setPackQty(BigDecimal packQty) {
		this.packQty = packQty;
	}

	/**
	 * 获取  单位重量
	 *
	 * @return packWeight
	 */
	public BigDecimal getPackWeight() {
		return packWeight;
	}

	/**
	 * 设置 单位重量
	 *
	 * @param packWeight 单位重量
	 */
	public void setPackWeight(BigDecimal packWeight) {
		this.packWeight = packWeight;
	}

	/**
	 * 获取  重量单位
	 *
	 * @return weightUnit
	 */
	public String getWeightUnit() {
		return weightUnit;
	}

	/**
	 * 设置 重量单位
	 *
	 * @param weightUnit 重量单位
	 */
	public void setWeightUnit(String weightUnit) {
		this.weightUnit = weightUnit;
	}

	/**
	 * 获取  单位毛重
	 *
	 * @return packGrossWeight
	 */
	public BigDecimal getPackGrossWeight() {
		return packGrossWeight;
	}

	/**
	 * 设置 单位毛重
	 *
	 * @param packGrossWeight 单位毛重
	 */
	public void setPackGrossWeight(BigDecimal packGrossWeight) {
		this.packGrossWeight = packGrossWeight;
	}

	/**
	 * 获取  单位体积
	 *
	 * @return packVolumn
	 */
	public BigDecimal getPackVolumn() {
		return packVolumn;
	}

	/**
	 * 设置 单位体积
	 *
	 * @param packVolumn 单位体积
	 */
	public void setPackVolumn(BigDecimal packVolumn) {
		this.packVolumn = packVolumn;
	}

	/**
	 * 获取  体积单位
	 *
	 * @return volumnUnit
	 */
	public String getVolumnUnit() {
		return volumnUnit;
	}

	/**
	 * 设置 体积单位
	 *
	 * @param volumnUnit 体积单位
	 */
	public void setVolumnUnit(String volumnUnit) {
		this.volumnUnit = volumnUnit;
	}

	/**
	 * 获取  最大库存
	 *
	 * @return maxStorage
	 */
	public BigDecimal getMaxStorage() {
		return maxStorage;
	}

	/**
	 * 设置 最大库存
	 *
	 * @param maxStorage 最大库存
	 */
	public void setMaxStorage(BigDecimal maxStorage) {
		this.maxStorage = maxStorage;
	}

	/**
	 * 获取  最小库存
	 *
	 * @return minStorage
	 */
	public BigDecimal getMinStorage() {
		return minStorage;
	}

	/**
	 * 设置 最小库存
	 *
	 * @param minStorage 最小库存
	 */
	public void setMinStorage(BigDecimal minStorage) {
		this.minStorage = minStorage;
	}

	/**
	 * 获取  安全库存
	 *
	 * @return safeStorage
	 */
	public BigDecimal getSafeStorage() {
		return safeStorage;
	}

	/**
	 * 设置 安全库存
	 *
	 * @param safeStorage 安全库存
	 */
	public void setSafeStorage(BigDecimal safeStorage) {
		this.safeStorage = safeStorage;
	}

	/**
	 * 获取  库存单位
	 *
	 * @return storageUnit
	 */
	public String getStorageUnit() {
		return storageUnit;
	}

	/**
	 * 设置 库存单位
	 *
	 * @param storageUnit 库存单位
	 */
	public void setStorageUnit(String storageUnit) {
		this.storageUnit = storageUnit;
	}

	/**
	 * 获取  存储类型
	 *
	 * @return storageType
	 */
	public String getStorageType() {
		return storageType;
	}

	/**
	 * 设置 存储类型
	 *
	 * @param storageType 存储类型
	 */
	public void setStorageType(String storageType) {
		this.storageType = storageType;
	}

	/**
	 * 获取  存储条件
	 *
	 * @return storageTerms
	 */
	public String getStorageTerms() {
		return storageTerms;
	}

	/**
	 * 设置 存储条件
	 *
	 * @param storageTerms 存储条件
	 */
	public void setStorageTerms(String storageTerms) {
		this.storageTerms = storageTerms;
	}

	/**
	 * 获取  自动报警
	 *
	 * @return autoAlarm
	 */
	public Boolean getAutoAlarm() {
		return autoAlarm;
	}

	/**
	 * 设置 自动报警
	 *
	 * @param autoAlarm 自动报警
	 */
	public void setAutoAlarm(Boolean autoAlarm) {
		this.autoAlarm = autoAlarm;
	}

	/**
	 * 获取  ABC分类
	 *
	 * @return abcType
	 */
	public String getAbcType() {
		return abcType;
	}

	/**
	 * 设置 ABC分类
	 *
	 * @param abcType ABC分类
	 */
	public void setAbcType(String abcType) {
		this.abcType = abcType;
	}

	/**
	 * 获取 物料详细信息表
	 *
	 * @return materialDetail
	 */
	public MaterialDetail getMaterialDetail() {
		return materialDetail;
	}

	/**
	 * 设置 物料详细信息表
	 *
	 * @param materialDetail 物料详细信息表
	 */
	public void setMaterialDetail(MaterialDetail materialDetail) {
		this.materialDetail = materialDetail;
	}

	/**
	 * 获取 客户设置信息表
	 *
	 * @return customerSetting
	 */
	public CustomerSetting getCustomerSetting() {
		return customerSetting;
	}

	/**
	 * 设置 客户设置信息表
	 *
	 * @param customerSetting 客户设置信息表
	 */
	public void setCustomerSetting(CustomerSetting customerSetting) {
		this.customerSetting = customerSetting;
	}

	/**
	 * 获取 物料组表
	 *
	 * @return materialGroup
	 */
	public List<MaterialGroup> getMaterialGroup() {
		return materialGroup;
	}

	/**
	 * 设置 物料组表
	 *
	 * @param materialGroup 物料组表
	 */
	public void setMaterialGroup(List<MaterialGroup> materialGroup) {
		this.materialGroup = materialGroup;
	}

	/**
	 * 获取 物料-客户关联表
	 *
	 * @return materialCustomer
	 */
	public List<MaterialCustomer> getMaterialCustomer() {
		return materialCustomer;
	}

	/**
	 * 设置 物料-客户关联表
	 *
	 * @param materialCustomer 物料-客户关联表
	 */
	public void setMaterialCustomer(List<MaterialCustomer> materialCustomer) {
		this.materialCustomer = materialCustomer;
	}


}
